    
    var app = angular.module('myApp', ['ngGrid','ui.bootstrap','mensagem','myMenu','zoomDinamico','WRPUtil']);
    
      
	/*
	 * 	CONTROLE TELA CADASTRO DE USUARIO	- INICIO
	 * */
	function MyCtrl ($scope,$http,mensagem,zoomDinamico,WRPUtil) {

    	$scope.url = "./php/moduloGeral/perfil.php";
    	
    	/* OBJETO COM TODOS OS DADOS DA TELA*/
    	$scope.perfilObj       = {};
    	$scope.perfilObj.id    = "0";
   	
    	
    	$scope.dtpModulos       = [];
    	$scope.mySelections     = [];
    	$scope.modulosLiberados = [];
	    $scope.desabilitaExcluir= true;
	    
	    
	    
	    //grid modulos
		$scope.modulosLiberados = [];
		$scope.gridModulos = { 
	    						data: 'modulosLiberados',
	    						columnDefs: [
	    										{field: 'id',        displayName: 'Código',width:100},
	    										{field: 'descricao', displayName: 'Módulo'}
	    									],			
	    						multiSelect: false,
	    						canSelectRows: false,
	    						selectedItems: $scope.mySelections
	    					 };	 
	    
	    
	    
	    /*
	     * INIT
	     * */
	    
	    $scope.init = function(){
	    	var parametros = {};
	    	
	    	parametros.acao = "init";
	    	
	    	$http.post($scope.url,parametros).
	        success(function(data, status) {
	        	      	
	            var resultado      = angular.fromJson(data);
	            
	            if(resultado["erro"]){
	            	mensagem.erro(resultado["erro"]); 
	            }else{
	            	$scope.dtpModulos = resultado["modulo"];
	            }
	            
	        })
	        .
	        error(function(data, status) {
	        	mensagem.erro("Erro ao carregar dados iniciais!");
	        });
	    };
	    
	    
	    /*
	     *  GRAVA E ALTERAR OS REGISTROS
	     */
	    $scope.gravar = function(){
	    	
	    	$scope.perfilObj.acao    = "save";
	    	$scope.perfilObj.modulos = $scope.modulosLiberados;
	    	
	    	$http.post($scope.url,$scope.perfilObj).
	        success(function(data, status) {
	        	      	
	            var resultado      = angular.fromJson(data);
	            
	            if(resultado["erro"]){
	            	mensagem.erro(resultado["erro"]); 
	            }else{
	            	$scope.limpar();
	            	mensagem.sucesso("Registro gravado com sucesso!");
	            }
	            
	        })
	        .
	        error(function(data, status) {
	        	mensagem.erro("Erro ao carregar registros!");
	        });
	    };
	    
	    $scope.confirmacaoDeletar = function(){    	
	     	mensagem.confirmacao("Deseja excluir o registro?",$scope.deletar);
	    };
	     
	    $scope.deletar = function(confirma){
	    	if(confirma == "S"){
		    	var parametros  = {};
		        parametros      = $scope.perfilObj;
		    	parametros.acao = "deletar";
		    	
		    	$http.post($scope.url,parametros).
		        success(function(data, status) {
		        	      	
		            var resultado      = angular.fromJson(data);
		            
		            if(resultado["erro"]){
		            	mensagem.erro(resultado["erro"]); 
		            }else{
		            	$scope.limpar();
		        		mensagem.sucesso("Registro deletado com sucesso!");
		            }
		            
		        })
		        .
		        error(function(data, status) {
		        	mensagem.erro("Erro ao deletar registro!");
		        });
		     }
	    };
	     
	    $scope.limpar = function(){
	    	$scope.perfilObj        = {id:"0"};
	    	$scope.mySelections     = [];
	    	$scope.modulosLiberados = [];
	    	$scope.desabilitaExcluir= true;
	    };
	  	
	  	$scope.adicionaModuloGrid = function(){
			//VALIDA SELECAO COMBO
	  		if(isNaN($scope.perfilObj.cbbModulo)){
				mensagem.erro("Selecione o campo módulo!");
				return; 
			}
	  		
	  		//VALIDA ITEM ADICIONADO
	   		if(WRPUtil.getIndexById($scope.perfilObj.cbbModulo, $scope.modulosLiberados)!=-1)
	   		{	
	   			mensagem.erro("Módulo já adicionado!");
	  			return;
			} 
	  		
	  		//ADICIONA ITEM NA GRID
	  		var objSelecionado = WRPUtil.getObjById($scope.perfilObj.cbbModulo, $scope.dtpModulos);
			$scope.modulosLiberados.push(objSelecionado);
		};
		
		$scope.removerModuloGrid = function(){
			
	  		if(!$scope.gridModulos.selectedItems[0]){
				mensagem.erro("Selecione um registro!");
	   			return;
			}
	   	
	   		var itemSelect = $scope.gridModulos.selectedItems[0];
	   		
	   		var index = WRPUtil.getIndexById(itemSelect.id, $scope.modulosLiberados);
	   		
            $scope.gridModulos.selectItem(index, false);
            
 			$scope.modulosLiberados.splice(index,1);	
		};
	  	
		
		/* 
		 * 
		 * COMPONENTE ZOOM DINAMICO - INICIO
		 * 
		 * */
		
		$scope.funcaoPesquisar = function (zoomObj){
	
			zoomObj.acao = "getDadosZoom";
			
			$http.post($scope.url,zoomObj).
	        success(function(data, status) {
	        	      	
	            var resultado      = angular.fromJson(data);
	            
	            if(resultado["erro"]){
	            	mensagem.erro(resultado["erro"]); 
	            }else{
	            	zoomDinamico.setRegistros(resultado["registros"]);
	            }
	            
	        })
	        .
	        error(function(data, status) {
	        	mensagem.erro("Erro ao carregar registros!");
	        });
	          
		};
		
		
		$scope.retornoZoom  = function(registroObj){
			zoomDinamico.fechar();
			
			var parametros        = {};
			parametros.acao       = "getDadosAlterar";
			parametros.id         = registroObj["id"];
			
			$http.post($scope.url,parametros).
	        success(function(data, status) {
	        	      	
	            var resultado      = angular.fromJson(data);
	            
	            if(resultado["erro"]){
	            	mensagem.erro(resultado["erro"]); 
	            }else{
	            	$scope.perfilObj         = resultado["registro"]; 
	            	$scope.modulosLiberados  = resultado["registro"]["modulos"];
	            	$scope.desabilitaExcluir = false; 	
	            }
	            
	        })
	        .
	        error(function(data, status) {
	        	mensagem.erro("Erro ao carregar registros!");
	        });
			
		};
		
		
		$scope.abrirZoom = function(){
			
			var config = [
							{id:1 ,field: 'id',        displayName: 'Código',    filtro:true , tipo:"numero", width: 80},
							{id:2, field: 'descricao', displayName: 'Descrição', filtro:true , tipo:"String"}
						  ]; 
			
			zoomDinamico.setConfig(config);
			
			var estilo = {
				 styleGrid:"gridZoomUsuario",
				 styleCbb :"cbbCampo",
				 styleTxi :"txiZoomPesquisa",
				 StyleBtn :"btn btnOkZoom" 
			};
			
			zoomDinamico.setStyle(estilo);
			zoomDinamico.setFuncaoPesquisa($scope.funcaoPesquisar);
			zoomDinamico.setFuncaoRetorno($scope.retornoZoom);
			zoomDinamico.setLargura(650); 
			zoomDinamico.setTitulo("Perfil");
			
	    	zoomDinamico.abrir();
	    };
		
		
		$scope.limpar();	   	
	}
	
	/*
	 * 
	 * COMPONENTE ZOOM DINAMICO - FIM
	 * 
	 * */
	/*
	 * 	CONTROLE TELA CADASTRO DE USUARIO	- FIM
	 * */
